/**
 * 
 */
package sqs.dataaccess.hibernate;

import java.util.List;

import sqs.dataaccess.QuestionnaireDao;
import sqs.exception.DataAccessException;
import sqs.model.Questionnaire;
import sqs.model.User;

/**
 * @author kjleng
 *
 */
public class HibernateQuestionnaireDao extends AbstractDao implements QuestionnaireDao {
	public void createQuestionnaire(Questionnaire questionnaire)
			throws DataAccessException {
		try {
			super.saveOrUpdate(questionnaire);
        } catch (Throwable t) {
            throw new DataAccessException(t.toString());
        }
	}
	
	public void updateQuestionnaire(Questionnaire questionnaire)
			throws DataAccessException {
		try {
			super.saveOrUpdate(questionnaire);
        } catch (Throwable t) {
            throw new DataAccessException(t.toString());
        }
	}

	public Questionnaire getQuestionnaireByQuestionnaireId(int questionnaireId)
			throws DataAccessException {
		try {
			System.out.println("!!!!!HibernateQuestionnaire ");
	    	
			Questionnaire questionnaire = (Questionnaire)super.find(Questionnaire.class, questionnaireId);
			System.out.println("!!!!!questionnaire in hibernate = " +questionnaire);
	    	
			return questionnaire;
		} catch (Throwable t) {
            throw new DataAccessException(t.toString());
        }
	}

	public List<Questionnaire> getAllQuestionnaires() throws DataAccessException{
		try {
			List<Questionnaire> questionnaires = (List<Questionnaire>)super.findAll(Questionnaire.class);
			return questionnaires;
		} catch (Throwable t) {
            throw new DataAccessException(t.toString());
        }
	}
	
	public List<Questionnaire> getQuestionnairesByOwner(User user)throws DataAccessException{
		try {
			List<Questionnaire> questionnaires = (List<Questionnaire>)super.findByCategory(Questionnaire.class, "owner", user.getUserId());
			return questionnaires;
		} catch (Throwable t) {
            throw new DataAccessException(t.toString());
        }
	}
	
}
